package com.ruoyi.safe.service.impl;

import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.safe.domain.BizOverseer;
import com.ruoyi.safe.domain.vo.BizOverseerVo;
import com.ruoyi.safe.mapper.BizOverseerMapper;
import com.ruoyi.safe.service.IBizOverseerService;
import com.ruoyi.system.mapper.SysUserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 督查督办Service业务层处理
 *
 * @author lhm
 * @date 2024-01-15
 */
@Service
public class BizOverseerServiceImpl implements IBizOverseerService {
    @Autowired
    private BizOverseerMapper bizOverseerMapper;
    @Autowired
    private SysUserMapper sysUserMapper;

    /**
     * 查询督查督办
     *
     * @param id 督查督办主键
     * @return 督查督办
     */
    @Override
    public BizOverseer selectBizOverseerById(Long id) {
        return bizOverseerMapper.selectBizOverseerById(id);
    }

    /**
     * 查询督查督办列表
     *
     * @param bizOverseer 督查督办
     * @return 督查督办
     */
    @Override
    public List<BizOverseer> selectBizOverseerList(BizOverseer bizOverseer) {
        return bizOverseerMapper.selectBizOverseerList(bizOverseer);
    }

    /**
     * 新增督查督办
     *
     * @param bizOverseer 督查督办
     * @return 结果
     */
    @Override
    public int insertBizOverseer(BizOverseer bizOverseer) {
        bizOverseer.setInitTime(DateUtils.getNowDate());
        bizOverseer.setCreateTime(DateUtils.getNowDate());
        return bizOverseerMapper.insertBizOverseer(bizOverseer);
    }

    /**
     * 修改督查督办
     *
     * @param bizOverseer 督查督办
     * @return 结果
     */
    @Override
    public int updateBizOverseer(BizOverseer bizOverseer) {
        bizOverseer.setUpdateTime(DateUtils.getNowDate());
        return bizOverseerMapper.updateBizOverseer(bizOverseer);
    }

    /**
     * 批量删除督查督办
     *
     * @param ids 需要删除的督查督办主键
     * @return 结果
     */
    @Override
    public int deleteBizOverseerByIds(Long[] ids) {
        return bizOverseerMapper.deleteBizOverseerByIds(ids);
    }

    /**
     * 删除督查督办信息
     *
     * @param id 督查督办主键
     * @return 结果
     */
    @Override
    public int deleteBizOverseerById(Long id) {
        return bizOverseerMapper.deleteBizOverseerById(id);
    }

    @Override
    public List<BizOverseerVo> selectOverseerVo(Long recordId) {
        List<BizOverseerVo> overseerVoList = new ArrayList<>();
        List<SysUser> sysUsers = sysUserMapper.selectUserListAll();
        BizOverseer bizOverseer = new BizOverseer();
        bizOverseer.setRecordId(recordId);
        List<BizOverseer> bizOverseers = bizOverseerMapper.selectBizOverseerList(bizOverseer);
        for (BizOverseer overseer : bizOverseers) {
            BizOverseerVo bizOverseerVo = new BizOverseerVo();
            BeanUtils.copyProperties(overseer, bizOverseerVo);
            if (StrUtil.isNotEmpty(bizOverseerVo.getInitUser())) {
                List<SysUser> collectInitUser = sysUsers.stream().filter(u -> bizOverseerVo.getInitUser().equals(u.getUserName())).collect(Collectors.toList());
                if (collectInitUser.size() > 0) {
                    bizOverseerVo.setInitUserNickName(collectInitUser.get(0).getNickName());
                }
            }
            if (StrUtil.isNotEmpty(bizOverseerVo.getDealUser())) {
                List<SysUser> collectDealUser = sysUsers.stream().filter(u -> bizOverseerVo.getDealUser().equals(u.getUserName())).collect(Collectors.toList());
                if (collectDealUser.size() > 0) {
                    bizOverseerVo.setDealUserNickName(collectDealUser.get(0).getNickName());
                }
            }
            overseerVoList.add(bizOverseerVo);
        }
        return overseerVoList;
    }
}
